#include <qtextedit.h>
#include <qaction.h>
////#include <qpopupmenu.h>
#include <qmenubar.h>
#include <qlabel.h>
#include <qstatusbar.h>

#include "texteditor.h"

TextEditor::TextEditor(QWidget *parent, const char *name)
  ////: QMainWindow(parent, name)
  : QMainWindow(parent)
{
  txt = new QTextEdit(this);
  setCentralWidget(txt); //txtをメインウィジェットにする

  createActions(); //メニューやツールバーの中のアクションを設定する

  createMenus(); //メニューを設定する
  createToolBars(); //ツールバーを設定する
  createStatusBar(); //ステイタスバーを設定する

}

void TextEditor::createActions()
{
  //Newのアクションの設定
  newAct = new QAction(tr("&New"), this);
  newAct->setIconSet(QPixmap::fromMimeSource("new.png"));
  newAct->setStatusTip(tr("Create a new text file"));
  connect(newAct, SIGNAL(activated()), this, SLOT(newFile()));

  //Openのアクションの設定
  openAct = new QAction(tr("&Open..."), tr("Ctrl+O"), this);
  openAct->setIconSet(QPixmap::fromMimeSource("open.png"));
  openAct->setStatusTip(tr("Open an existing text file"));
  connect(openAct, SIGNAL(activated()), this, SLOT(open()));
  
  //Saveのアクションの設定
  saveAct = new QAction(tr("&Save"), tr("Ctrl+S"), this);
  saveAct->setIconSet(QPixmap::fromMimeSource("save.png"));
  saveAct->setStatusTip(tr("Save the text to disk"));
  connect(saveAct, SIGNAL(activated()), this, SLOT(save()));
  
  //Save Asのアクションの設定
  saveAsAct = new QAction(tr("Save &As..."), 0, this);
  saveAsAct->setStatusTip(tr("Save the text under a new "
			     "name"));
  connect(saveAsAct, SIGNAL(activated()), this, SLOT(saveAs()));

  //Exitのアクションの設定
  exitAct = new QAction(tr("E&xit"), tr("Ctrl+Q"), this);
  exitAct->setStatusTip(tr("Exit the application"));
  connect(exitAct, SIGNAL(activated()), this, SLOT(close()));

  //Cutのアクションの設定
  cutAct = new QAction(tr("Cu&t"), tr("Ctrl+X"), this);
  cutAct->setIconSet(QPixmap::fromMimeSource("cut.png"));
  cutAct->setStatusTip(tr("Cut the current selection's contents "
			  "to the clipboard"));
  connect(cutAct, SIGNAL(activated()), txt, SLOT(cut()));
  
  //Copyのアクションの設定
  copyAct = new QAction(tr("&Copy"), tr("Ctrl+C"), this);
  copyAct->setIconSet(QPixmap::fromMimeSource("copy.png"));
  copyAct->setStatusTip(tr("Copy the current selection's contents "
			   "to the clipboard"));
  connect(copyAct, SIGNAL(activated()), txt, SLOT(copy()));
  
  //Pasteのアクションの設定
  pasteAct = new QAction(tr("&Paste"), tr("Ctrl+V"), this);
  pasteAct->setIconSet(QPixmap::fromMimeSource("paste.png"));
  pasteAct->setStatusTip(tr("Paste the clipboard's contents into "
                              "the current selection"));
  connect(pasteAct, SIGNAL(activated()), txt, SLOT(paste()));

}

//メニューを設定していく
void TextEditor::createMenus()
{
  //Fileの中にアクションを追加していく
  fileMenu = new QPopupMenu(this);
  newAct->addTo(fileMenu);
  openAct->addTo(fileMenu);
  saveAct->addTo(fileMenu);
  saveAsAct->addTo(fileMenu);
  fileMenu->insertSeparator(); //区切りを入れる
  exitAct->addTo(fileMenu);

  //Editの中にアクションを追加していく
  editMenu = new QPopupMenu(this);
  cutAct->addTo(editMenu);
  copyAct->addTo(editMenu);
  pasteAct->addTo(editMenu);

  //メニューの中にFileを追加
  menuBar()->insertItem(tr("&File"), fileMenu);
  //メニューの中にEditを追加
  menuBar()->insertItem(tr("&Edit"), editMenu);

}

//ツールバーを設定していく
void TextEditor::createToolBars()
{
  //１つ目のツールバーにNew,Open,Saveをつくっていく
  fileToolBar = new QToolBar(tr("File"), this);
  newAct->addTo(fileToolBar);
  openAct->addTo(fileToolBar);
  saveAct->addTo(fileToolBar);
  
  //２つ目のツールバーにCut,Copy,Pastをつくっていく
  editToolBar = new QToolBar(tr("Edit"), this);
  cutAct->addTo(editToolBar);
  copyAct->addTo(editToolBar);
  pasteAct->addTo(editToolBar);
}

//ステイタスバーの設定
void TextEditor::createStatusBar()
{
  status = new QLabel(this);
  statusBar()->addWidget(status);
}


//本当は以下にいろいろな機能の実装を書く

void TextEditor::newFile()
{
  //Newの実装をこの関数内で設定する
}

void TextEditor::open()
{

}

bool TextEditor::save()
{
  return false;
}

bool TextEditor::saveAs()
{
  return false;
}



